package com.example.sams.service;

import com.example.sams.domain.po.Students;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.sams.domain.request.EnrollCourseRequest;
import com.example.sams.domain.request.UpdateProfileRequest;
import com.example.sams.domain.vo.StudentInfoVO;
import com.example.sams.utils.ResultUtil;

/**
 * <p>
 * 学生表 服务类
 * </p>
 *
 * @author jinghong
 * @since 2025-11-04
 */
public interface IStudentsService extends IService<Students> {
    /**
     * 获取当前学生信息
     * @param userId 当前登录用户ID
     * @return 学生信息VO
     */
    ResultUtil getCurrentStudentInfo(String userId);

    /**
     * 获取当前学生已选课程列表
     * @param userId 当前登录用户ID
     * @return 课程列表
     */
    ResultUtil getMyCourses(String userId);

    /**
     * 选课
     * @param userId 当前登录用户ID
     * @param request 选课请求
     * @return 操作结果
     */
    ResultUtil enrollCourse(String userId, EnrollCourseRequest request);

    /**
     * 退课
     * @param userId 当前登录用户ID
     * @param courseId 课程ID
     * @return 操作结果
     */
    ResultUtil dropCourse(String userId, String courseId);

    /**
     * 更新个人资料
     * @param userId 当前登录用户ID
     * @param request 更新资料请求
     * @return 操作结果
     */
    ResultUtil updateProfile(String userId, UpdateProfileRequest request);

    /**
     * 根据教师名称获取教师信息
     * @param teacherName 教师名称
     * @return 教师信息
     */
    ResultUtil getTeacherByName(String teacherName);
}
